iT邦幫忙

2024 iThome 鐵人賽

DAY 16
0
DevOps

探索亞馬遜雨林30天系列 第 16

Day 16: 運用CodePipeline部署程式碼到EC2(下)

  • 分享至 

  • xImage
  •  

前置作業完成後,就可以開始新增CodePipeline。新增一個新的Pipeline共有五個步驟,中間兩個步驟需要build code和deploy code,可以選擇使用AWS的CodeBuild和CodeDeploy,也可以使用Jenkins,在這裡會選用AWS的CodeBuild和CodeDeploy當範例。

Step 1

第一個步驟需要填寫name、pipeline type和execution mode,這邊要特別注意role的部分,如果是選擇existing service role,該role需要有執行S3、CodeBuild和CodeDeploy的權限。

Step 2

這個步驟需要指定程式碼來源。因為我習慣使用gitlab,所以provider選擇gitlab,如果AWS帳號還沒有跟gitlab建立connection,可以按Connect to gitlab建立新的connection,AWS會自動導到gitlab做登入驗證的動作。

connect之後,AWS就可以透過api取得Repository的清單,使用者就可以直接從清單中選擇要deploy的Repository。

選好Repository後,指定要從哪個branch拉程式碼。

然後設定trigger的條件,比如說要在Repository有人Push程式碼的情況下,讓pipeline自動重新部署程式碼到EC2。

Step 3

第三個步驟要設定用什麼方式Build code。選擇CodeBuild之後,可以指定現有的CodeBuild project,或者create一個新的project。

如果選擇要新增一個project,project設定的環境盡量跟要deploy的環境一致,這樣把系統跑起來的時候,問題會比較少。

這次要部署的EC2作業系統是Ubuntu,所以選擇Ubuntu,並設定CodeBuild的role。由於CodeBuild從S3上面程式碼,也需要把Build好的程式碼丟到S3,所以該role需要有存取S3的權限。

接著要撰寫Build commands,才能按照指令去build程式碼,這邊要注意的是,要設定好artifacts的位置,不然在deploy的時候,會在S3找不到build好的code。

Step 4

選擇CodeDeploy部署的話,需要指定Application和Deployment group,如果還沒有Application和Deployment group,可自行到CodeDeploy新增。

另外,需要特別注意的是,如果要透過CodeDeploy部署code到EC2,EC2需要安裝CodeDeploy agent,並確認CodeDeploy agent在EC2有正常運作。

新增Application的部分,只要填name和指定要deploy到哪個AWS service即可。

新增完Application之後,就可以在Application底下新增Deployment group,要給一個可以存取ec2和s3權限的role。並選擇Deployment type,這邊先以In-place為範例。

接著設定條件選擇要部署的instance,如果instance有加tag,就可以用tag去過濾出要deploy的instance。

新增完Deployment group之後,就可以回到CodePipeline完成Step 4。

Step 5

Review完設定之後,就可以新增pipeline了。

新增完pipeline之後,就可以看到執行結果,


上一篇
Day 15: 運用CodePipeline部署程式碼到EC2(上)
系列文
探索亞馬遜雨林30天16
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言